home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2006 February / Gamestar_81_2006-02_dvd.iso / Red Shark / Missions / Mission_10 / MissionTasks.script < prev    next >
Text File  |  2001-11-20  |  15KB  |  559 lines

  1. //-------------------------------------------------------------------
  2. //
  3. //  This code is copyright 2001 by G5 Software.
  4. //  Any unauthorized usage, either in part or in whole of this code
  5. //  is strictly prohibited. Violators WILL be prosecuted to the
  6. //  maximum extent allowed by law.
  7. //
  8. //-------------------------------------------------------------------
  9.  
  10. ///////////////////////////////////
  11. //
  12. // Mission 10 -- Intercept Convoy
  13. //
  14. ///////////////////////////////////
  15.  
  16. class CMission10_AIController extends CBaseAIController
  17. {
  18.   array  ActivatePointCenterList = array(
  19.     vector( 3405, 2510, 0),     // First Base A
  20.     vector( 3120, 4670, 0),     // B
  21.     vector( 6040, 5875, 0),     // C
  22.     vector( 3435, 7350, 0),     // D
  23.     vector( 6590, 9280, 0),     // E
  24.     vector( 2995, 9825, 0),     // F
  25.     vector( 3410, 12645, 0),    // G
  26.     vector( 3390, 13365, 0),    // H
  27.     vector( 8185, 4480, 0),     // I
  28.     vector( 9030, 3925, 0));    // J
  29.  
  30.  
  31.   array  ActivatePointRadiusList = array(
  32.     50.0,                       // radius of "ring is broken"
  33.     50.0,
  34.     50.0,
  35.     50.0,
  36.     50.0,
  37.     50.0,
  38.     50.0,
  39.     50.0,
  40.     50.0,
  41.     50.0);
  42.  
  43.   array  ActivatePointNameList = array(
  44.     "",
  45.     "B",
  46.     "C",
  47.     "D",
  48.     "E",
  49.     "F",
  50.     "G",
  51.     "H",
  52.     "I",
  53.     "J"
  54.   );
  55.  
  56.   void OnObjectEnterArea( int _AreaIndex, string _NavPointName, string _ObjectID)
  57.   {
  58.     if ( _AreaIndex == 7
  59.       && Core_IsStringStartsWith( _ObjectID, "10_NaziConv_A"))
  60.     {
  61.       Core_BroadcastEvent("OnConvoyAStop");
  62. //      Core_LogMessage("Camera shows: Convoy A in AreaIndex 7");
  63. //      Core_SendEventTo(
  64. //            "Helicopter",
  65. //            "ShowEventPoint",
  66. //            vector(3390, 13365, 0), //        - point to show
  67. //            80.0                    //        - distance from camera to point
  68. //        );
  69.     };
  70.     if ( _AreaIndex == 9
  71.       && Core_IsStringStartsWith( _ObjectID, "10_NaziConv_B"))
  72.     {
  73.       Core_BroadcastEvent("OnConvoyBStop");
  74. //      Core_LogMessage("Camera shows: Convoy B in AreaIndex 9");
  75. //      Core_SendEventTo(
  76. //            "Helicopter",
  77. //            "ShowEventPoint",
  78. //            vector(9030, 3925, 0), //        - point to show
  79. //            80.0                   //        - distance from camera to point
  80. //        );
  81.     }
  82.   }
  83. }
  84.  
  85. class C10_NaziConv_A extends CNavPointUser, CBaseAITask_BaseTask
  86. {
  87.   //
  88.   // convoy parameters
  89.  
  90.   vector   DestinationPoint;//     = vector( 3390, 13365, 0);//vector( 3390, 13365, 0); // where to go
  91.   float    CruiserSpeed            = 30; // autocade with guard should keep this speed
  92.   float    RunSpeed                = 30; // autocade wo guards should keep this speed
  93.   float    OvertakeSpeed           = 34; // maximum allowed speed for overtake
  94.   float    AutocadDistanceMin      = 20; // nearest allowed distance in autocade
  95.   float    AutocadDistanceOptimum  = 25; // try to keep this distance in autocade
  96.   float    AutocadDistanceOvertake = 40; // overtake distance
  97.   string   CurLeader               = "";
  98.   boolean  IsLeader                = false;
  99.  
  100.  
  101.   //
  102.   // current state
  103.  
  104.   boolean  Moving   = false; // true when object is moving to destination
  105.   boolean  Ambushed = false; // true when object is under ambush
  106.   boolean  Retreat  = false; // true when object is retreating
  107.   boolean  Run      = false; // true when object is running without stop to destination
  108.  
  109.   int StartTime = 0;
  110.   int TimeContinuous = 5000;
  111.   boolean MovingStatus = false;
  112.  
  113.   void OnConvoyAStop()
  114.   {
  115. //    SetOrder_StopNow();
  116. //    Core_BroadcastEvent(
  117. //        "OnDisplayMessage",
  118. //        "Mission Failed. Convoy reach the Nordgeimer base",
  119. //        StructureDestroyedColor
  120. //      );
  121. //    Core_BroadcastEvent("NeedToQuit");
  122.   }
  123.  
  124.   void ClearState()
  125.   {
  126.     Moving    = false;
  127.     Ambushed  = false;
  128.     Retreat   = false;
  129.     Run       = false;
  130.     CurLeader = "";
  131.     IsLeader  = false;
  132.   }
  133.  
  134.   //
  135.   // start up initialization
  136.  
  137.   void Init()
  138.   {
  139.     DestinationPoint = vector( 3390, 13365, 0);
  140.     StartTime = GetGameTime();
  141.     // give start order
  142.     //GiveOrder_MoveToTarget();
  143.   }
  144.  
  145.   void OnUpdate()
  146.   {
  147.     if ( (StartTime != 0) && ( (GetGameTime() - StartTime) > TimeContinuous ) && ( !MovingStatus ) )
  148.     {
  149.       GiveOrder_MoveToTarget();
  150.       Core_BroadcastEvent("OnConvoyAStart");
  151. //        Core_LogMessage("Camera shows: Convoy A after moving start. Unit 02");
  152. //        Core_SendEventTo(
  153. //          "Helicopter",
  154. //          "ShowEventObject",
  155. //          "10_NaziConv_A_02",       //     - id of object to show
  156. //          70.0                      //     - distance from camera to object
  157. //          );
  158.       MovingStatus = true;
  159.     }
  160.   }
  161.  
  162.  
  163.   //
  164.   // orders
  165.  
  166.   void GiveOrder_MoveToTarget()
  167.   {
  168.     //Core_LogMessage("" + Core_GetIdentificator() + ": order: move to target");
  169.  
  170.     string Leader = GetCommander("ConvA_Rank"); // find leader that we should followed by
  171.     if ( Moving == true
  172.       && Leader == CurLeader)
  173.     {
  174.       // nothing changed
  175.       return;
  176.     }
  177.  
  178.     // set state
  179.     ClearState();
  180.     Moving = true;
  181.     CurLeader = Leader;
  182.  
  183.     if ( Leader == "")
  184.     {
  185.       // we are leader. go directly to destination
  186.       SetOrder_MoveTo(
  187.         DestinationPoint,
  188.         CruiserSpeed);
  189.     }
  190.     else
  191.     {
  192.       // leader found. follow him
  193.       SetOrder_Follow(
  194.         Leader, // follow leader
  195.         AutocadDistanceMin,
  196.         AutocadDistanceOptimum,
  197.         AutocadDistanceOvertake,
  198.         CruiserSpeed,
  199.         OvertakeSpeed);
  200.     };
  201.   }
  202.  
  203.   void OnLeaderLost( string _LeaderID)
  204.   {
  205.     // reorder
  206.     GiveOrder_MoveToTarget();
  207.   }
  208. };
  209.  
  210. class C10_NaziConv_B extends CNavPointUser, CBaseAITask_BaseTask
  211. {
  212.   //
  213.   // convoy parameters
  214.  
  215.   vector   DestinationPoint;//     = vector( 9030, 3925, 0);//vector( 9030, 3925, 0); // where to go
  216.   float    CruiserSpeed            = 30; // autocade with guard should keep this speed
  217.   float    RunSpeed                = 30; // autocade wo guards should keep this speed
  218.   float    OvertakeSpeed           = 34; // maximum allowed speed for overtake
  219.   float    AutocadDistanceMin      = 20; // nearest allowed distance in autocade
  220.   float    AutocadDistanceOptimum  = 25; // try to keep this distance in autocade
  221.   float    AutocadDistanceOvertake = 40; // overtake distance
  222.   string   CurLeader               = "";
  223.   boolean  IsLeader                = false;
  224.  
  225.  
  226.   //
  227.   // current state
  228.  
  229.   boolean  Moving   = false; // true when object is moving to destination
  230.   boolean  Ambushed = false; // true when object is under ambush
  231.   boolean  Retreat  = false; // true when object is retreating
  232.   boolean  Run      = false; // true when object is running without stop to destination
  233.  
  234.   int StartTime = 0;
  235.   int TimeContinuous = 10000;
  236.   boolean MovingStatus = false;
  237.  
  238.   void OnConvoyBStop()
  239.   {
  240.     SetOrder_StopNow();
  241. //    Core_BroadcastEvent(
  242. //        "OnDisplayMessage",
  243. //        "Mission Failed. Convoy reach the Titovo village",
  244. //        StructureDestroyedColor
  245. //      );
  246. //    Core_BroadcastEvent("NeedToQuit");
  247.   }
  248.  
  249.   void ClearState()
  250.   {
  251.     Moving    = false;
  252.     Ambushed  = false;
  253.     Retreat   = false;
  254.     Run       = false;
  255.     CurLeader = "";
  256.     IsLeader  = false;
  257.   }
  258.  
  259.   //
  260.   // start up initialization
  261.  
  262.   void Init()
  263.   {
  264.     DestinationPoint = vector( 9030, 3925, 0);
  265.     StartTime = GetGameTime();
  266.     // give start order
  267.     // GiveOrder_MoveToTarget();
  268.   }
  269.  
  270.   void OnUpdate()
  271.   {
  272.     if ( (StartTime != 0) && ( (GetGameTime() - StartTime) > TimeContinuous ) && ( !MovingStatus ) )
  273.     {
  274.       GiveOrder_MoveToTarget();
  275.       MovingStatus = true;
  276.       Core_BroadcastEvent("OnConvoyBStart");
  277. //        Core_LogMessage("Camera shows: Convoy B after moving start. Unit 02");
  278. //        Core_SendEventTo(
  279. //          "Helicopter",
  280. //          "ShowEventObject",
  281. //          "10_NaziConv_B_02",          //     - id of object to show
  282. //          70.0                      //     - distance from camera to object
  283. //          );
  284.     }
  285.   }
  286.  
  287.   //
  288.   // orders
  289.  
  290.   void GiveOrder_MoveToTarget()
  291.   {
  292.     //Core_LogMessage("" + Core_GetIdentificator() + ": order: move to target");
  293.  
  294.     string Leader = GetCommander("ConvB_Rank"); // find leader that we should followed by
  295.     if ( Moving == true
  296.       && Leader == CurLeader)
  297.     {
  298.       // nothing changed
  299.       return;
  300.     }
  301.  
  302.     // set state
  303.     ClearState();
  304.     Moving = true;
  305.     CurLeader = Leader;
  306.  
  307.     if ( Leader == "")
  308.     {
  309.       // we are leader. go directly to destination
  310.       SetOrder_MoveTo(
  311.         DestinationPoint,
  312.         CruiserSpeed);
  313.     }
  314.     else
  315.     {
  316.       // leader found. follow him
  317.       SetOrder_Follow(
  318.         Leader, // follow leader
  319.         AutocadDistanceMin,
  320.         AutocadDistanceOptimum,
  321.         AutocadDistanceOvertake,
  322.         CruiserSpeed,
  323.         OvertakeSpeed);
  324.     };
  325.   }
  326.  
  327.   void OnLeaderLost( string _LeaderID)
  328.   {
  329.     // reorder
  330.     GiveOrder_MoveToTarget();
  331.   }
  332. }
  333. ///======================================================================
  334.  
  335. class C10_NaziCross extends CBaseAITask_BaseTask
  336. {
  337.   void OnEnemyTargeted()
  338.   {
  339. //    StartTime = GetGameTime();
  340.     Core_BroadcastEvent( "WarningDetected" );
  341.   }
  342.   void Unit_Destroyed( string ObjectID )
  343.   {
  344.     if ( Core_IsStringStartsWith( ObjectID, GetUnitPrefix() ))
  345.     {
  346.       Core_BroadcastEvent( "CrossroadAttacked" );
  347.     }
  348.   }
  349. }
  350. ///--------------------------------------------
  351. class C10_NaziCross_A extends C10_NaziCross
  352. {
  353.   string GetUnitPrefix()
  354.   {
  355.     return "10_NaziCross_A";
  356.   }
  357. }
  358. //---------------------------------------------
  359. class C10_NaziCross_B extends C10_NaziCross
  360. {
  361.   string GetUnitPrefix()
  362.   {
  363.     return "10_NaziCross_B";
  364.   }
  365. }
  366. //---------------------------------------------
  367. class C10_NaziCross_C extends C10_NaziCross
  368. {
  369.   string GetUnitPrefix()
  370.   {
  371.     return "10_NaziCross_C";
  372.   }
  373. }
  374. ///=======================================================================
  375. class C10_NaziSinglePatrol extends CNavPointUser, CBaseAITask_BaseTask
  376. {
  377.   //
  378.   // convoy parameters
  379.  
  380.   vector   DestinationPoint        = vector( 7300, 4445, 0); // where to go
  381.   float    CruiserSpeed            = 27; // autocade with guard should keep this speed
  382.   float    RunSpeed                = 28; // autocade wo guards should keep this speed
  383.   float    OvertakeSpeed           = 30; // maximum allowed speed for overtake
  384.   float    AutocadDistanceMin      = 20; // nearest allowed distance in autocade
  385.   float    AutocadDistanceOptimum  = 25; // try to keep this distance in autocade
  386.   float    AutocadDistanceOvertake = 35; // overtake distance
  387.   string   CurLeader               = "";
  388.   boolean  IsLeader                = false;
  389.  
  390.  
  391.   //
  392.   // current state
  393.  
  394.   boolean  Moving   = false; // true when object is moving to destination
  395.   boolean  Run      = false; // true when object is running without stop to destination
  396.  
  397. //  int StartTime = 0;
  398. //  int TimeContinuous = 2000;
  399. //  boolean MovingStatus = false;
  400.  
  401.   void ClearState()
  402.   {
  403.     Moving    = false;
  404.     Run       = false;
  405.     CurLeader = "";
  406.     IsLeader  = false;
  407.   }
  408.  
  409.   //
  410.   // start up initialization
  411.  
  412.   void Init()
  413.   {
  414.     DestinationPoint = vector( 7300, 4445, 0);
  415.     // give start order
  416.     GiveOrder_MoveToTarget();
  417.   }
  418.  
  419.   //
  420.   // orders
  421.  
  422.   void GiveOrder_MoveToTarget()
  423.   {
  424.     //Core_LogMessage("" + Core_GetIdentificator() + ": order: move to target");
  425.  
  426.     string Leader = GetCommander(GetGroupName()); // find leader that we should followed by
  427.     if ( Moving == true
  428.       && Leader == CurLeader)
  429.     {
  430.       // nothing changed
  431.       return;
  432.     }
  433.  
  434.     // set state
  435.     ClearState();
  436.     Moving = true;
  437.     CurLeader = Leader;
  438.  
  439.     if ( Leader == "")
  440.     {
  441.       // we are leader. go directly to destination
  442.       SetOrder_MoveTo(
  443.         DestinationPoint,
  444.         CruiserSpeed);
  445.     }
  446.     else
  447.     {
  448.       // leader found. follow him
  449.       SetOrder_Follow(
  450.         Leader, // follow leader
  451.         AutocadDistanceMin,
  452.         AutocadDistanceOptimum,
  453.         AutocadDistanceOvertake,
  454.         CruiserSpeed,
  455.         OvertakeSpeed);
  456.     };
  457.   }
  458.  
  459.   void OnLeaderLost( string _LeaderID)
  460.   {
  461.     // reorder
  462.     GiveOrder_MoveToTarget();
  463.   }
  464. }
  465. ///------------------------------------------------------------------------------------
  466. class C10_NaziPatrol_A extends C10_NaziSinglePatrol
  467. {
  468.   string GetGroupName()
  469.   {
  470.     return "Rank_PatrolA";
  471.   }
  472.  
  473.   void Init()
  474.   {
  475.     DestinationPoint = vector( 7300, 5445, 0);
  476.     // give start order
  477.     GiveOrder_MoveToTarget();
  478.   }
  479. }
  480. ///-----------------------------------------------------------------------------------------------
  481. class C10_CrossA_Patrol extends C10_NaziSinglePatrol
  482. {
  483.   string GetGroupName()
  484.   {
  485.     return "Rank_PatrolCrossA";
  486.   }
  487.  
  488.   void Init()
  489.   {
  490.     DestinationPoint = vector( 6035, 5870, 0);
  491.     // give start order
  492.     GiveOrder_MoveToTarget();
  493.   }
  494. }
  495. ///---------------------------------------------------------------------------------------------
  496. class C10_SharkPatrol extends C10_NaziSinglePatrol
  497. {
  498.   string GetGroupName()
  499.   {
  500.     return "Rank_SharkPatrol";
  501.   }
  502.  
  503.   void Init()
  504.   {
  505.     DestinationPoint = vector( 7130, 7553, 0);
  506.     // give start order
  507.     GiveOrder_MoveToTarget();
  508.   }
  509. }
  510.  
  511. /// ==========================================================================================
  512. class C10_Patrol_Tit_CrossA extends CNavPointUser, CBaseAITask_Patrol
  513. {
  514.   array GetPatrolTrip()
  515.   {
  516.     return array (vector(8185,4480,0),
  517.                   vector(6040,5875,0));
  518.   }
  519.  
  520.   float GetTripSpeed()
  521.   {
  522.     return 20;
  523.   }
  524. }
  525. ///-------------------------------------------------------------------------------------------
  526. class C10_Patrol_CrossA_CrossB extends CNavPointUser, CBaseAITask_Patrol
  527. {
  528.   array GetPatrolTrip()
  529.   {
  530.     return array (vector(3435,7350,0),
  531.                   vector(6045,5875,0));
  532.   }
  533.  
  534.   float GetTripSpeed()
  535.   {
  536.     return 20;
  537.   }
  538. }
  539. /// ------------------------------------------------------------------------------------------
  540. class C10_Patrol_CrossB_CrossC extends CNavPointUser, CBaseAITask_Patrol
  541. {
  542.   array GetPatrolTrip()
  543.   {
  544.     return array (vector(3435,7355,0),
  545.                   vector(6590,9280,0));
  546.   }
  547.  
  548.   float GetTripSpeed()
  549.   {
  550.     return 20;
  551.   }
  552. }
  553. // =================================================
  554. class C10_NaziTitovo extends CNavPointUser, CBaseAITask_BaseTask, CBaseAITask_Patrol
  555. {
  556. }
  557.  
  558.  
  559.